# Author:Xiao yang
# 时间：0930-week05

# 主要知识：列表入门

'''
Python 中内置了5个常用的序列结构，分别是列表、元组、集合、字典和字符串。
'''

user_data ="zhicaho||youge||gaojin||linzhiliang"
print(user_data[1])

# 引进列表
user_data_list =["zhichao","jack","Alex","Marry"]
password_list = [123435,463434,583495,438294]
age = [19,23,25,27]

# ① 更进一步的方法：【列表的嵌套，因为是同样类型的数据，所以可以嵌套】
# user_data_list =[["zhichao",123435,19],["jack",463434,23],["Alex",583495,25],["Marry",438294,27]]


# 从左向右取值（index & slice）
print(user_data[2])
# 切片 slice，右边的值取不到，例如[0:3]，索引为3的值取不到
print(user_data_list[0:3])
# 当从0开始数值时，0 可以忽略不写。
print(user_data_list[:3])

# -3，-2，-1,0，1,2,3,4...
# 2. 从右往左取值（index & slice）
print(user_data[-2])
# 切片 slice，右边的值取不到，例如[-3：-1]，索引为-1的值取不到
print(user_data_list[-3:-1])

# 如果取值为空：说明slice写错了，例如[-3:0]
# 如果要取到最后一个值，不能为0，直接省略不写。
print(user_data_list[-3:0])
print(user_data_list[-3:])
# ******重要******
print(user_data_list[:])

# 步长，list列长slice；[start：stop：step]

# #range([start,]end[,step]) 注：[]表示start和step可写可不写
# start:开始数字
# end；结束数字
# step；步长
# start默认为0，step默认为1
# 功能：生成具有一定规律的序列

'''
如果没有指定开始值,则默认为0；
如果没有指定结束值,则取列表允许的最大值；
如果没有指定步长值,则默认步长为1；
'''
num = list(range(10))
print(num)
print(num[0:6])
print(num[0:6:2])

'''总结：'''
# 列表组合【合并】
# 1.使用加号
list1 = [432,435,6]
list2 = ["abc","defj"]
list3 = list1 + list2
print(list3)  #[432, 435, 6, 'abc', 'defj']

# 列表元素的【重复】
# 2.使用乘号 *
list4 = [1,2,3]
list5 = list4 * 3
print(list5)  #[1, 2, 3, 1, 2, 3, 1, 2, 3]

# 判断指定元素是否在指定列表中
# 成员运算符   in   not in
list6 = [32,43,546,"hello",False]
print(43 in list6)
print(43 not in list6)
print(100 in list6)
print(100 not in list6)
"""
工作原理：使用指定数据在列表中和每个元素进行比对，只要元素内容相等，则说明存在的
True
False
False
True
"""

#列表的截取
list7 = [23,34,6,57,6878,3,5,4,76,7]
print(list7[4])

#使用冒号:
#截取指定的区间：列表名[开始索引：结束索引],特点：包头不包尾    前闭后开区间
print(list7[2:6])

#从开头截取到指定索引，特点：不包含指定的索引
print(list7[0:6])
print(list7[:6])

#从指定索引截取到结尾
#注意：因为包头不包尾，所以如果要取到最后一个元素，可以超过索引的范围，不会报错
print(list7[4:20])
print(list7[4:])


# 【书本】 关于列表的知识点
# p71
# 1.列表非常适合存储相关对象的集合。如果你有大量类似的对象，想把它们作为一个整体，列表就是放置这些对象的一个理想场所。
# 2.列表与其他语言中的数组很类似。不过，其他语言中的数组大小往往是固定的，与之不同，Python的列表可以根据需要动态收缩和扩展。
# 3.在代码中，对象列表用中括号包围，列表对象相互之间用逗号分隔。
# 4.空列表表示为[]。
# 5.要检查一个对象是否在一个列表中，最快的方法是使用Python的in操作符，它会检查成员关系。
# 6.可以在运行时扩展列表，因为Python提供了一组列表方法，包括append、extend和insert。
# 7.由于提供了remove和pop方法，可以在运行时收缩列表。
